<!DOCTYPE html>
<html lang="zh">

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>
    
    函数的定义 - DSRBLOG
    
  </title>
  

  
  
  <link href="atom.xml" rel="alternate" title="DSRBLOG" type="application/atom+xml">
  <link rel="stylesheet" href="asset/css/style.min.css">
  <link rel="stylesheet" href="asset/css/doc.css">
  <script src="asset/app.js"></script>


</head>

<body> <section class="ct-body">
	<div class="container">
		<div class="columns is-variable bd-klmn-columns is-4 is-centered">
			<div class="column is-four-fifths">
				<div class="post-body single-content">
					
					<h1 class="title">
						函数的定义
					</h1>


					<div class="media">
						
						
						<div class="media-content">
							<div class="content">
								<p>
									<span class="date">2022/01/12 22:20 下午</span>
									

									

									<br />
									<span class="tran-tags">Tags:</span>&nbsp;
									
									<a class="tag is-link is-light">#C语言</a>
									

								</p>
							</div>
						</div>

					</div>
				</div>
				<article class="markdown-body single-content">
					<h2><a id="%E5%AE%9A%E4%B9%89%E5%BA%94%E5%BD%93%E5%8C%85%E6%8B%AC%E7%9A%84%E5%86%85%E5%AE%B9" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>定义应当包括的内容</h2>
<ul>
<li>
<p>函数的名字</p>
</li>
<li>
<p>函数的类型</p>
</li>
<li>
<p>函数的<em>参数</em>的名字和类型，以便在调用函数时向它们传递数据。<em>（无参函数不需要此项）</em></p>
</li>
<li>
<p>指定函数应当完成什么操作，即函数的功能。</p>
</li>
</ul>
<p><strong>提示：</strong> C语言规定，在程序中用到的所有函数，必须<em>先定义，后使用</em></p>
<h2><a id="%E5%AE%9A%E4%B9%89%E6%97%A0%E5%8F%82%E5%87%BD%E6%95%B0%E7%9A%84%E4%B8%80%E8%88%AC%E5%BD%A2%E5%BC%8F" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>定义无参函数的一般形式</h2>
<pre class="line-numbers"><code class="language-c">类型标识符 函数名() //函数首行
//---↓函数体↓---
{ 
    声明部分
    语句部分
}
//---↑函数体↑---
</code></pre>
<h4><a id="%E4%BE%8B%E5%A6%82%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>例如：</h4>
<pre class="line-numbers"><code class="language-c">void fun(){
    printf(&quot;Hello World!&quot;);
}
</code></pre>
<h2><a id="%E5%AE%9A%E4%B9%89%E6%9C%89%E5%8F%82%E5%87%BD%E6%95%B0%E7%9A%84%E4%B8%80%E8%88%AC%E5%BD%A2%E5%BC%8F" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>定义有参函数的一般形式</h2>
<pre class="line-numbers"><code class="language-c">类型标识符 函数名(形式参数列表) //函数首行
//---↓函数体↓---
{ 
    声明部分
    语句部分
}
//---↑函数体↑---
</code></pre>
<h4><a id="%E4%BE%8B%E5%A6%82%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>例如：</h4>
<pre class="line-numbers"><code class="language-c">int max(int x,int y){
    int z = x &gt; y ? x : y;
    return z;
}
</code></pre>
<h2><a id="%E5%AE%9A%E4%B9%89%E7%A9%BA%E5%87%BD%E6%95%B0%E7%9A%84%E4%B8%80%E8%88%AC%E5%BD%A2%E5%BC%8F" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>定义空函数的一般形式</h2>
<pre class="line-numbers"><code class="language-c">类型标识符 函数名(){}
</code></pre>
<h4><a id="%E4%BE%8B%E5%A6%82%EF%BC%9A" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>例如：</h4>
<pre class="line-numbers"><code class="language-c">void fun(){}
</code></pre>
<h1><a id="%E5%87%BD%E6%95%B0%E7%9A%84%E5%8F%82%E6%95%B0" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>函数的参数</h1>
<h2><a id="%E5%BD%A2%E5%BC%8F%E5%8F%82%E6%95%B0" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>形式参数</h2>
<ul>
<li>
<p>函数定义时括号中的变量名称为<code>形式参数</code>（简称<code>形参</code>）</p>
</li>
<li>
<p>在被定义的函数中，必须指定<code>形参</code>的类型</p>
</li>
</ul>
<p><strong>注意：</strong> <code>形参</code>只能是变量</p>
<h2><a id="%E5%AE%9E%E9%99%85%E5%8F%82%E6%95%B0" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>实际参数</h2>
<ul>
<li>主调函数中调用一个函数时，被调用函数名后面括号中的参数（可以是一个表达式）称为<code>实际参数</code>（简称<code>实参</code>）</li>
</ul>
<pre class="line-numbers"><code class="language-c">max(3,a+b)
</code></pre>
<ul>
<li><code>实参</code>可以是常量、变量或表达式，但要求它们有确定的值，在调用时将<code>实参</code>的值赋给<code>形参</code></li>
</ul>
<h3><a id="%E4%BE%8B%E5%A6%82" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>例如</h3>
<pre class="line-numbers"><code class="language-c">#include &lt;stdio.h&gt;
    
int main()
{
    int a,b;
    a=1,b=2;
    c=max(a,b);//函数调用时的(a,b)为实参
    return 0;
}
    
int max(int x,int y)//函数定义时的(x,y)为形参
{
    return x&gt;y?x:y;
}
</code></pre>
<p><strong>注意：</strong> 函数调用时<code>形参</code>和<code>实参</code>产生联系，完成<code>形参</code>的初始化</p>
<h2><a id="%E5%85%B3%E4%BA%8E%E5%BD%A2%E5%8F%82%E5%92%8C%E5%AE%9E%E5%8F%82%E7%9A%84%E8%AF%B4%E6%98%8E" class="anchor" aria-hidden="true"><span class="octicon octicon-link"></span></a>关于形参和实参的说明</h2>
<ul>
<li>
<p>在定义函数中指定的<code>形参</code>，在未出现函数调用时，并不占用内存中的储存单元。只有在<em>发生函数调用时</em>，函数中的<code>形参</code>才被分配内存单元。在调用结束后，<code>形参</code>所占的内存单元也被释放。</p>
</li>
<li>
<p><code>实参</code>与<code>形参</code>的类型应当相同或兼容。</p>
</li>
<li>
<p><code>实参</code>向<code>形参</code>的数据传递是单向<code>值传递</code>，只能由<code>实参</code>传给<code>形参</code>。调用结束后，<code>形参</code>单元被释放，<code>实参</code>单元仍保留并维持原值。</p>
</li>
</ul>

				</article>
				<div class="comments-wrap">
					<div class="share-comments">
						

						

						
					</div>
				</div><!-- end comments wrap -->
			</div>
		</div><!-- end columns -->
	</div><!-- end container -->
</section>  














<script src="asset/prism.js"></script>









</body>

</html>